package com.example.demo4;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class Test {
    public static void main(String[] args) {
        // 1.拿红包进来
        List<Integer> moneys = getMoneys();
        System.out.println(moneys);
        Collections.shuffle(moneys);
        System.out.println(moneys);

        // 2.创建100个员工,也就是启动100个线程
        List<PersonThread> personThreads = new ArrayList<>();
        for (int i = 1; i <= 100; i++) {
            PersonThread personThread = new PersonThread(moneys, i + "号");
            personThreads.add(personThread);
            personThread.start();
        }

        // 等待所有员工线程结束
        for (PersonThread personThread : personThreads) {
            try {
                personThread.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("活动结束");

        // 输出每个员工抢到的红包金额,按金额降序排列
        personThreads.stream().sorted((p1, p2) -> p2.getTotalMoney() - p1.getTotalMoney()).forEach(p -> System.out.println(p.getName() + "抢到了" + p.getTotalMoney()));
    }

    /**
     * 生成红包金额列表
     *
     * @return 包含所有红包金额的列表
     */
    public static List<Integer> getMoneys() {
        List<Integer> moneys = new ArrayList<>();
        Random r = new Random();
        // 生成160个1到30之间的随机金额
        for (int i = 0; i < 160; i++) {
            moneys.add(r.nextInt(30) + 1);
        }
        // 生成40个31到100之间的随机金额
        for (int i = 0; i < 40; i++) {
            moneys.add(r.nextInt(70) + 31);
        }
        return moneys;
    }
}
